View Javadoc
1 /*** 2 * BranchEdge 3 * 4 * This represents an edge used in a Branch 5 * in a control flow graph. 6 */ 7 8 package junit.quilt.cover.generic; 9 10 import junit.quilt.exception.InvalidTransitionException; 11 import org.apache.bcel.generic.*; 12 13 public class BranchEdge extends FlowControlEdge 14 { 15 private String expr = null; 16 private boolean value = false; 17 18 public BranchEdge(BlockVertex start, 19 BlockVertex target, 20 String expr, 21 boolean value) 22 { 23 super( start, target ); 24 this.expr = expr; 25 this.value = value; 26 } 27 28 public void connect( MethodGen method, 29 InstructionList il, 30 InstructionHandle source, 31 InstructionHandle target ) 32 throws InvalidTransitionException 33 { 34 if (source.getInstruction() instanceof IfInstruction) { 35 if (value) { 36 ((IfInstruction) source.getInstruction()).setTarget( target ); 37 } else { 38 if (source.getNext() != target) { 39 il.append( source, new GOTO( target ) ); 40 } 41 } 42 } else { 43 throw new InvalidTransitionException("If instruction expected."); 44 } 45 46 } 47 48 public FlowControlEdge copy( BlockVertex start, 49 BlockVertex target ) { 50 return new BranchEdge(start, 51 target, 52 expr, 53 value); 54 } 55 56 public String toString() { 57 String RC = "[B: "; 58 if (!value) RC = RC + "!"; 59 RC = RC + expr + "->" + getTarget() + "]"; 60 61 return RC; 62 } 63 } 64 65

This page was automatically generated by Maven